/*
 * @(#)Nodes.java 1.50 04/04/14
 * 
 * Clase Propia
 * PROP Grupo 13 Cluster 3
 */

/**
 * Esta clase se encarga de la lectura y escritura de ficheros
 * 
 * @author David Molins Gom�
 */



package datos;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;

import dominio.Graph;
import dominio.Nodes;

public class CtrlDatos {


	private static CtrlDatos singletonObject;

	public static CtrlDatos getInstance() {
		if (singletonObject == null)
			singletonObject = new CtrlDatos() {
		};
		return singletonObject;
	}

	/** Constructora privada. **/

	public Nodes ReadTarea(String path){  // aixo de entrarli el path s'haur� de decidir i el retorno tmb est� per dicidir

		File archivo = null;
		FileReader fr = null;
		BufferedReader br = null;
		Nodes nodes = new Nodes(1, "test", "asdasd");

		try {
			// Apertura del fichero y creacion de BufferedReader para poder
			// hacer una lectura comoda (disponer del metodo readLine()).
			archivo = new File (path);
			fr = new FileReader (archivo);
			br = new BufferedReader(fr);

			// Lectura del fichero
			String linea = br.readLine();  // leemos la primera linea

			StringBuffer  strf = new StringBuffer(linea);
			strf.delete(0, strf.indexOf("NameTarea\":\""));
			String NameTarea = strf.substring(0, strf.indexOf("\"")); // NAMETAREA
			strf.delete(0, strf.indexOf("\""));

			strf.delete(0, strf.indexOf("DescriptionTarea\":\""));
			String DescriptionTarea = strf.substring(0, strf.indexOf("\"")); // DESCRIPTIONTAREA
			strf.delete(0, strf.indexOf("\""));



			strf.delete(0, strf.indexOf("MapTarea\":\""));


			while ((linea = br.readLine()) != null){
				Integer counter = 0;
				strf = new StringBuffer(linea);

                while (linea.contains("Subtarea")){
					strf.delete(0, strf.indexOf("Subtarea\":\""));
					String Subtarea = strf.substring(0, strf.indexOf("\"")); // NAMESUBTAREA
					strf.delete(0, strf.indexOf("\""));

					strf.delete(0, strf.indexOf("DescSubtarea\":\""));
					String DescSubtarea = strf.substring(0, strf.indexOf("\"")); // DESCRIPTIONSUBTAREA
					strf.delete(0, strf.indexOf("\""));

					
					strf.delete(0, strf.indexOf("Prioridad\":\""));
					String Prioridad = strf.substring(0, strf.indexOf("\"")); // PRIORIDAD
					strf.delete(0, strf.indexOf("\""));

					counter++; // actualixamos el contador para saber cuantas subtareas tenemos
				}
				
				Integer aux = 1;
				while(linea.contains("Cost")){
					while (aux <= counter){
						linea = br.readLine();
						strf = new StringBuffer(linea);
						Integer aux2 = 1;
						while (aux2 <= counter){
							strf.delete(0, strf.indexOf("id\":"+aux2+",\"coste\":"));
							String coste = strf.substring(0, strf.indexOf("\""));  // Coste de ir de subtarea aux a subtarea aux2
							aux2++;
						}	
					}
				}
			}
			//System.out.println(linea);
		}
		catch(Exception e){
			e.printStackTrace();
		}finally{
			// En el finally cerramos el fichero, para asegurarnos
			// que se cierra tanto si todo va bien como si salta 
			// una excepcion.
			try{                    
				if( null != fr ){   
					fr.close();     
				}                  
			}catch (Exception e2){ 
				e2.printStackTrace();
			}
		}
		return nodes;
	};


	public void WriteTarea(Graph grafo, String path){       // teoricamente escribe/ a�ade al fichero la info del graph

/*		FileWriter fichero = null;
		PrintWriter pw = null;

		try{
			fichero = new FileWriter(path);
			pw = new PrintWriter(fichero);
			pw.println("{\"NameTarea\":\""+NOMBRE+"\",\"DescriptionTarea\":\""+DESCRIPTION+"\",\"MapTarea\":{\n");
			for(Integer i = 0; i < SIZE_DE_SUBTAREAS; i++){  //bucle para ir escribiendo las subtareas
				pw.println("{\"Subtarea\":\""+nombre+"\",\"DescSubtarea\":\""+Description+"\"}\n");
			}
			pw.println("{\"Cost\":\n");
			for(Integer i = 0; i < SIZE_DE_SUBTAREAS; i++){
				for(Integer i = 0; i < SIZE_DE_SUBTAREAS; i++){
					pw.println(""{\"id\":"+ i +",\"coste\":"COSTE"},");
				}
				pw.println("\n");
			}
			

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Nuevamente aprovechamos el finally para 
				// asegurarnos que se cierra el fichero.
				if (null != fichero)
					fichero.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
    */
	}
}